/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.servinf.ani.sincronizador.entities;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author mortiz
 */
@Entity
@Table(name = "tramo_via", catalog = "ani_admin", schema = "public")
@NamedQueries({
    @NamedQuery(name = "TramoVia.findAll", query = "SELECT t FROM TramoVia t")})
public class TramoVia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "codigo_via")
    private Integer codigoVia;
    @Column(name = "id_unidad_funcional")
    private Integer idUnidadFuncional;
    @Basic(optional = false)
    private String nombre;
    @Column(name = "punto_inicio")
    private String puntoInicio;
    @Column(name = "punto_destino")
    private String puntoDestino;
    @JoinColumn(name = "id_proyecto", referencedColumnName = "id_proyecto")
    @ManyToOne(optional = false)
    private Proyecto idProyecto;
    @JoinColumn(name = "ciudad_origen", referencedColumnName = "codigo_mcpo")
    @ManyToOne
    private Municipio ciudadOrigen;
    @JoinColumn(name = "ciudad_destino", referencedColumnName = "codigo_mcpo")
    @ManyToOne
    private Municipio ciudadDestino;
    @JoinColumn(name = "dpto_origen", referencedColumnName = "codigo_dpto")
    @ManyToOne
    private Departamento dptoOrigen;
    @JoinColumn(name = "dpto_destino", referencedColumnName = "codigo_dpto")
    @ManyToOne
    private Departamento dptoDestino;
    @OneToMany(mappedBy = "idTramoVia", fetch = FetchType.LAZY)
    private List<Intervencion> intervencionList;
    @OneToMany(mappedBy = "codigoVia", fetch = FetchType.LAZY)
    private List<Servicios> serviciosList;
    @OneToMany(mappedBy = "codigoVia", fetch = FetchType.LAZY)
    private List<ServiciosXArea> serviciosXAreaList;

    public TramoVia() {
    }

    public TramoVia(Integer codigoVia) {
        this.codigoVia = codigoVia;
    }

    public TramoVia(Integer codigoVia, String nombre) {
        this.codigoVia = codigoVia;
        this.nombre = nombre;
    }

    public Integer getCodigoVia() {
        return codigoVia;
    }

    public void setCodigoVia(Integer codigoVia) {
        this.codigoVia = codigoVia;
    }

    public Integer getIdUnidadFuncional() {
        return idUnidadFuncional;
    }

    public void setIdUnidadFuncional(Integer idUnidadFuncional) {
        this.idUnidadFuncional = idUnidadFuncional;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getPuntoInicio() {
        return puntoInicio;
    }

    public void setPuntoInicio(String puntoInicio) {
        this.puntoInicio = puntoInicio;
    }

    public String getPuntoDestino() {
        return puntoDestino;
    }

    public void setPuntoDestino(String puntoDestino) {
        this.puntoDestino = puntoDestino;
    }

    public Proyecto getIdProyecto() {
        return idProyecto;
    }

    public void setIdProyecto(Proyecto idProyecto) {
        this.idProyecto = idProyecto;
    }

    public Municipio getCiudadOrigen() {
        return ciudadOrigen;
    }

    public void setCiudadOrigen(Municipio ciudadOrigen) {
        this.ciudadOrigen = ciudadOrigen;
    }

    public Municipio getCiudadDestino() {
        return ciudadDestino;
    }

    public void setCiudadDestino(Municipio ciudadDestino) {
        this.ciudadDestino = ciudadDestino;
    }

    public Departamento getDptoOrigen() {
        return dptoOrigen;
    }

    public void setDptoOrigen(Departamento dptoOrigen) {
        this.dptoOrigen = dptoOrigen;
    }

    public Departamento getDptoDestino() {
        return dptoDestino;
    }

    public void setDptoDestino(Departamento dptoDestino) {
        this.dptoDestino = dptoDestino;
    }

    public List<Intervencion> getIntervencionList() {
        return intervencionList;
    }

    public void setIntervencionList(List<Intervencion> intervencionList) {
        this.intervencionList = intervencionList;
    }

    public List<Servicios> getServiciosList() {
        return serviciosList;
    }

    public void setServiciosList(List<Servicios> serviciosList) {
        this.serviciosList = serviciosList;
    }

    public List<ServiciosXArea> getServiciosXAreaList() {
        return serviciosXAreaList;
    }

    public void setServiciosXAreaList(List<ServiciosXArea> serviciosXAreaList) {
        this.serviciosXAreaList = serviciosXAreaList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigoVia != null ? codigoVia.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TramoVia)) {
            return false;
        }
        TramoVia other = (TramoVia) object;
        if ((this.codigoVia == null && other.codigoVia != null) || (this.codigoVia != null && !this.codigoVia.equals(other.codigoVia))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.servinf.ani.sincronizador.entities.TramoVia[ codigoVia=" + codigoVia + " , nombre = " + nombre +"]";
    }
    
}
